package cn.cscb.mms.server.controller;

import cn.cscb.mms.common.result.Result;
import cn.cscb.mms.pojo.dto.ManagerTaskInfoDTO;
import cn.cscb.mms.pojo.vo.ManagerTaskInfoVO;
import cn.cscb.mms.server.service.StatisticService;
import com.baomidou.mybatisplus.core.metadata.IPage;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import cn.cscb.mms.server.service.TaskInfoService;

import javax.annotation.Resource;
import java.util.List;
import java.util.Map;

/**
 * 营销任务统计控制器
 */
@Slf4j
@RestController("statisticController")
@RequestMapping("/statistic")
public class StatisticController {

    @Resource(name = "statisticService")
    private StatisticService statisticService;

    /**
     * 统计客户经理名下营销任务的各种状态
     *
     * @param managerTaskInfoDTO 入参包括：客户经理工号、统计起始时间、统计结束时间
     * @return 统计结果
     * @author Gao Yipeng
     */
    @PostMapping("/task")
    public Result<ManagerTaskInfoVO> managerTaskInfoStatistic(@RequestBody ManagerTaskInfoDTO managerTaskInfoDTO) {
        return Result.success(statisticService.statisticTaskInfo(managerTaskInfoDTO));
    }

    /**
     * 统计所有客户经理名下营销任务的各种状态
     *
     * @param managerTaskInfoDTO 入参包括：排序字段、统计起始时间、统计结束时间、分页参数
     * @return 统计结果列表
     * @author Gao Yipeng
     */
    @PostMapping("/tasks")
    public Result<IPage<ManagerTaskInfoVO>> managerTaskInfosStatistic(@RequestBody ManagerTaskInfoDTO managerTaskInfoDTO) {
        return Result.success(statisticService.statisticTaskInfoList(managerTaskInfoDTO));
    }

    /**
     * 统计客户经理前6个月中每个月的营销数据
     *
     * @param managerTaskInfoDTO 入参：客户经理工号
     * @return 统计列表
     */
    @PostMapping("/historyTasks")
    public Result<List<ManagerTaskInfoVO>> statisticInLastSixMonth(@RequestBody ManagerTaskInfoDTO managerTaskInfoDTO) {
        return Result.success(statisticService.statisticLastSixMonth(managerTaskInfoDTO));
    }



    @Resource
    private TaskInfoService taskInfoService;

    // 总览数据（存贷款、商机数）
    @GetMapping("/getStatisticsBetweenDate")
    public Result<Map> getStatisticsBetweenDate(@RequestParam("selectStartTime") String startDate,
                                                @RequestParam("selectEndTime") String endDate) {
        return Result.success(taskInfoService.getStatisticsBetweenDate(startDate, endDate));
    }
}